package com.lagou.observer;

import java.util.function.Predicate;

/**
 * 具体主题（Concrete Subject）角色：也叫具体目标类，它实现抽象目标中的通知方法，当具体主题的内部状态发生改变时，通知所有注册过的观察者对象。
 *
 * @author srh
 * @date 2020/03/19
 **/
public class ConcreteSubject extends AbstractSubject {

    /**
     * 特定通知
     */
    public void notifyObserver(Predicate<Observer> filter) {
        this.observers.forEach(observer -> {
            if (filter.test(observer)) {
                observer.out();
            }
        });
    }

}
